package com.example.application4.activity;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.application4.R;
import com.example.application4.database.UserDAO;

// LoginActivity 继承自 AppCompatActivity，并实现了 View.OnClickListener 接口
public class LoginActivity extends AppCompatActivity implements View.OnClickListener {

    private UserDAO userDAO;

    private EditText txtUsername;
    private EditText txtPassword;
    private CheckBox rememberMe;

    // 当 Activity 被创建时调用的方法
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置 Activity 使用的布局资源文件
        setContentView(R.layout.activity_login);

        // 初始化数据库操作对象
        userDAO = new UserDAO(this);

        txtUsername = findViewById(R.id.txtUserName);
        txtPassword = findViewById(R.id.txtPassword);
        rememberMe = findViewById(R.id.rememberMe);

        Button btnLogin = findViewById(R.id.btnLogin);
        btnLogin.setOnClickListener(this);

        Button btnRegister = findViewById(R.id.toRegister);
        btnRegister.setOnClickListener(this);

        // 检查是否已经有用户登录
        if (isUserLoggedIn()) {
            navigateToMainActivity();
        } else {
            // 否则填充登录信息（如果有保存的话）
            populateLoginInfo();
        }
    }

    // 检查用户是否已登录
    private boolean isUserLoggedIn() {
        return getSharedPreferences("appPreferences", MODE_PRIVATE)
                .getBoolean("isLogin", false);
    }

    // 跳转到主界面
    private void navigateToMainActivity() {
        Intent intent = new Intent(LoginActivity.this, GridViewActivity.class);
        startActivity(intent);
        finish();
    }

    // 填充登录信息
    private void populateLoginInfo() {
        // 从 SharedPreferences 中读取登录信息
        SharedPreferences loginInfo = getSharedPreferences("loginInfo", MODE_PRIVATE);
        String username = loginInfo.getString("username", "");
        String password = loginInfo.getString("password", "");

        // 如果有保存的用户名和密码，就填充到输入框中
        if (!username.isEmpty() && !password.isEmpty()) {
            rememberMe.setChecked(true);
            txtUsername.setText(username);
            txtPassword.setText(password);
        }

        // 从 Intent 中获取额外的数据
        Bundle bundle = this.getIntent().getExtras();
        if (bundle != null) {
            if (bundle.containsKey("username")) {
                txtUsername.setText(bundle.getString("username"));
            }
            if (bundle.containsKey("password")) {
                txtPassword.setText("");
            }
        }
    }

    @Override
    public void onClick(View view) {
        if (view.getId() == R.id.btnLogin) {
            loginUser();
        } else if (view.getId() == R.id.toRegister) {
            navigateToRegisterActivity();
        }
    }

    // 执行登录操作
    private void loginUser() {
        // 获取用户输入的用户名和密码
        String username = txtUsername.getText().toString();
        String password = txtPassword.getText().toString();

        // 验证用户名和密码
        if (userDAO.validateUser(username, password)) {
            // 如果验证通过，保存登录信息（如果选择了“记住我”）
            saveLoginInfoIfNeeded(username, password);
            // 显示登录成功的消息
            Toast.makeText(LoginActivity.this, "登录成功！", Toast.LENGTH_SHORT).show();
            // 跳转到主界面
            navigateToMainActivity();
        } else {
            // 如果验证失败，显示错误消息
            Toast.makeText(LoginActivity.this, "用户名或密码错误！", Toast.LENGTH_SHORT).show();
        }
    }

    // 如果用户选择了“记住我”，则保存登录信息
    private void saveLoginInfoIfNeeded(String username, String password) {
        if (rememberMe.isChecked()) {
            // 编辑 SharedPreferences 以保存用户名和密码
            SharedPreferences.Editor editor = getSharedPreferences("loginInfo", MODE_PRIVATE).edit();
            editor.putString("username", username);
            editor.putString("password", password);
            editor.apply();
        }

        // 更新登录状态
        getSharedPreferences("appPreferences", MODE_PRIVATE).edit()
                .putBoolean("isLogin", true)
                .putString("username", username)
                .apply();
    }

    // 跳转到注册界面
    private void navigateToRegisterActivity() {
        Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
        startActivity(intent);
    }
}
